Real-time gaming system having scalable database

ABSTRACT

A network-based game system includes a game-system-interface server configured to receive an instruction related to persistent game-state information from a game client application running on a remote computer device, a data base system comprising a master data base and a slave data base, wherein the master data base and the slave data base comprise substantially the same data-base structure configured to store persistent game-state information for a plurality of users, and a router configured to direct the instruction to one of the master data base or the slave data base to allow the persistent game-state information to be written to or retrieved from the one of the master data base or the slave data base in response to the instruction.

TECHNICAL FIELD

This application relates to a game system, more specifically, anetwork-based game system.

BACKGROUND

Interactive online digital entertainment has advanced on many fronts inrecent years, especially with respect to video gaming. For example,users can login to websites to find an opponent and then a game of chessor a card game in the virtual world. As a player may be competingagainst another player, the communication is bi-directional. However,not all video games can be played online. For a game of chess where timeto make a move does not have an immediate and consequential effect onthe outcome, players have time to contemplate the next move, countermove, game strategy and so on and the game does not need to providereal-time feedback. However, in a majority of real-time video games,time needed to make a decision and act upon that decision is relativelyshort so that players involved feel a sense of realism and engagement.In such a real-time game, action must occur in close proximity to reallife events. Real-time action is required for the action games,simulation games such as flight simulators and sport games. In mostcases persistent communications, scoring, player attributes, etc. cannotbe offered together with real-time realism and engagement. Scalabilityis another challenge to the network-based game application. While someexisting network-based systems can handle tens of thousands of gameplayers, it is a serious challenge to provide game applications in realtime to millions of players reliably and simultaneously.

SUMMARY

In one aspect, the present invention relates to a network-based gamesystem including a game-system-interface (GSI) server configured toreceive an instruction related to persistent game-state information froma game client application running on a remote computer device; a database system comprising a master data base and a slave data base, whereinthe master data base and the slave data base comprise substantially thesame data-base structure configured to store persistent game-stateinformation for a plurality of users; and a router configured to directthe instruction to one of the master data base or the slave data base toallow the persistent game-state information to be written to orretrieved from the one of the master data base or the slave data base inresponse to the instruction.

In another aspect, the present invention relates to a method ofproviding a game over a computer network. The method includes receivingan instruction related to persistent game-state information from a gameclient application running on a remote computer device; retrieving thepersistent game-state information from or writing the persistentgame-state information to a master data base or a slave data base inresponse to the instruction, wherein the master data base and the slavedata base store substantially the same data-base structure configured tostore persistent game-state information for a plurality of users; andsynchronizing changes in the persistent game-state information in one ofthe master data base and the slave data base to the other one of themaster data base and the slave data base.

In yet another aspect, the present invention relates to a method forproviding uninterrupted gaming service during a data-base structureupdate in a network-based gaming system. The method includes receivingfirst persistent game-state information from a game client applicationrunning on a remote computer device; authenticating at least one of useridentification, game session identification, or game room identificationin the request; writing a first portion of the first persistentgame-state information to a first data-base structure in a master databases; changing a second data-base structure in a slave data base;writing a second portion of the first persistent game-state informationto the second data-base structure after the step of changing a seconddata-base structure; changing the first data-base structure such thatthe first data-base structure becomes substantially the same as thesecond data-base structure; and synchronizing the first persistentgame-state information stored in the first data structure and the firstpersistent game-state information stored in the second data structure.Implementations of the system may include one or more of the following.The master data base and the slave data base can be configured tosynchronize changes in the persistent game-state information in one ofthe master data base and the slave data base to the other one of themaster data base and the slave data base. The instruction can includewriting persistent game-state information to the data base system orretrieving the persistent game-state information from the data basesystem. The data base system can include a plurality of storage devicesin connection with the router and the master data base and the slavedata base are stored on two different storage devices in the pluralityof storage devices. The master data base and the slave data base canshare the same network address for communication with the router or theGSI server. The data base system can include a plurality of pairs ofmaster data bases and slave data bases in connection with the router,and wherein the router is configured to direct the instruction to one ofthe plurality of pairs of the master data base and the slave data basein accordance with a user identification associated with theinstruction. The GSI server can store a GSI program that comprises a GSTcontroller that is configured extract the instruction from a messagereceived from the game client application. The GSI controller cande-serialize the message received from the game client application. TheGSI program can include a GSI model that is configured to initiate adatabase access object or a database object, wherein the database accessobject or the database object is configured to communicate with therouter in response to the instruction. The data base system can beconfigured to return a response message in response to the instruction.The network-based game system can further include a game serverconfigured to store a game engine application, wherein the game engineapplication is configured to receive the instruction related topersistent game-state information from a game client application andsend the instruction to the GSI server. The game engine application orthe GSI program can send a message to authenticate user identification,game session identification, or game room identification associated witha game client application. The persistent game-state information caninclude one or more of a user's account information, useridentification, a user's game scores, session identification, game roominformation, a user's game currency or game credits, an inventory for auser's asset, or a user's buddies list.

Embodiments may include one or more of the following advantages. Thedisclosed system and methods provide a scalable data base systemsuitable for providing network-based gaming service in real time to alarge number of game players. The data base system can provide high dataaccess rates to enable real-time responses to a large number of gamesessions. Gaming status information can be instantaneously updated tothe data base system and thus assuring accuracy of the gaming data inthe data base system at each point of time.

The disclosed data base system includes a plurality of distributed database clusters that can be easily scaled up to hold data for increasednumber of users or game sessions. Each cluster can include a master database and a slave data base that provides performance reliability andallow flexible and reliable updates of the data base structure.Moreover, the scalable distributed data base clusters also allow thedata base system to be implemented at low cost while providing fast andreliable data accesses.

Furthermore, functionalities for the communications with the data basesystem have been integrated in an enhanced GSI application. The enhancedGSI application includes a flexible network interface that allows theGSI application to handle data communications with data base systems indifferent formats and protocols.

The disclosed system and methods provide a simplified game architecturefor a network-based game system. A game client application running one agame player's computer device can communicate with a load balancer inthe network-based game system in a persistent network connection. Theload balancer routes requests or instruction from the game clientapplication to a game engine application on a game server. The gameengine application makes requests and sends information to a game systeminterface (GSI) when needed. The game client application no longer needsto communicate with the GSI in non-persistent network connections. Theelimination of the non-persistent network connection simplifies thecommunications between the game client application and the network-basedsystem. A single persistent connection to a game server at a consistentgateway IP address is much easier to maintain than multiple connectionsto many different possible services in some network-based game systems.

In addition, the persistent network connections between the game clientapplication and the load balancer provide more robust communicationsbetween the game client application and the network-based game system.The persistent network connections allow instantaneous informationexchanges with the game client applications in real time. The persistentnetwork connections have much lower probability of connection failuresthan non-persistent network connections. The persistent networkcommunications allow a large number of client game applications to beplayed without network latency at multiple remote locations.

The disclosed system and methods also improves network security forcommunications with the game client applications. The game clientapplications and the network-based game system can communicate inpersistent and authenticated network connections. The communications arefirst validated and authenticated by game engine applications on thegame servers. The GSI receives requests or updates from the game clientapplications only through the game engine applications after thevalidation and authentication, that is, the communications to and fromGSI are internal to the network-based game system. This architecturedesign removes the need for network security for non-persistent networkconnections between GSI and game client applications in somenetwork-based game systems. Furthermore, the persistent networkconnection between the game client application and the game engineapplication are stateful. The game engine application is thus muchbetter equipped to validate and authenticate requests from the gameclaim applications. As a result, the network security is much improvedfor the network-based game system.

Furthermore, the disclosed system and methods also improve theefficiency and scalability of the network-based game system. Therequests from a large number of game client applications can beintelligently routed by a load balancer to a plurality of game serversin accordance with the up/down status and the load levels of the gameservers. The game servers in the network-based game system can thus bemore efficiently utilized and network traffic can be minimized. Thenetwork-based game system can also be more easily scaled up byincreasing the number of game servers to accommodate the communicationneeds with increased number of game client applications.

Details of one or more embodiments are set forth in the accompanyingdrawing and in the description below. Other features, objects, andadvantages of the invention will become apparent from the descriptionand drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a system diagram of a network-based game system.

FIG. 2 is a block diagram of a game architecture compatible with thenetwork-based game system.

FIG. 3 is a flow diagram for the network-based game system.

FIG. 4 is a block diagram for an enhanced GSI application and a scalabledata base system.

FIG. 5 is a data flow diagram for an enhanced GSI application and ascalable data base system.

FIG. 6 shows a flow chart for updating a scalable data base system in anetwork-based game system.

DETAILED DESCRIPTION

Referring to FIG. 1, a network-based game system 100 can support gameapplications running on remote computer devices 106 and 107 through acommunication network 105. The communication network 105 can includevarious wired, wireless, satellite communication arrangements includingbut not limited to a wide area network such as the Internet, a localarea network, a cellular phone network under various communicationprotocols such as 2G, 2.5G and 3G, Global System for MobileCommunications (GSM), General Packet Radio Service (GPRS), EDGE, CodeDivision Multiple Access (CDMA), Wideband CDMA, TD-SCDMA, UniversalMobile Telecommunications System (UMTS), etc., city wide wires networksuch as WiMax, and wireless local area network (WLAN) such as Wi-Fiwireless communication standards such as IEEE 802.11, Wi-Max, and IEEE806.16, and others. The computer devices 106 and 107 can includepersonal computers, portable digital assistance (PDA) devices, cellphones, digital image capture devices, and dedicated game devices suchas Microsoft XBOX, SONY PlayStation OR PS2, Nintendo gaming machinesGameCube, or GameBoy.

The network-based game system 100 can include a load balancer 115, oneor more web servers 121-124, one or more session servers 130, aplurality of game servers 141-143, and a data base system 150. The database system 150 can for example be implemented as a storage areanetwork. The load balancer 115 can include one or a system of serversthat are designed to ensure redundancy and reliability for thenetwork-based game system 100. The network-based game system 100 can beoperated by a game service provider such as Gaia Interactive Inc. basedin California, USA. The network-based game system 100 can provide awebsite such as www.gaiaonline.com on the Internet to host a gamecommunity and provide various game services such as games, discussiongroups, forums, and e-mails etc. A player can sign up at the website toown his or her own account. The player can also personalize his or herown profiles. The player can also set up a list of buddies. He or shemay play with some of the buddies in multi-player network-based games.As described below, the network-based system 100 can store gamestatistics and other game properties associated with a player in anetworked storage device, available and updatable to the game player.

A game player can access the web site of the game service provider usingcomputer devices 106 and 107 with a web browser application executed onthe computer devices 106 or 107. The web browser applications areavailable from several manufacturers including Internet Explorer™ fromMicrosoft, Netscape™ from AOL, and Firebox™ from Mozilla and so on.Various Internet browsing applications are available to cellular phones,PDAs, game consoles, which are also compatible with the disclosed systemand methods.

FIG. 2 depicts interactions between various components in a gamearchitecture 200 compatible with the network-based game system 100. Gameclient applications 206 and 207 reside on the computer devices 106 and107. The game client applications 206 and 207 can be executed by aplug-in to the web browser application. The game client applications 206and 207 can include game logic for one or more games and enableanimation display for the games. The web-browser plug-in can enable theweb browser to audio or video messages and properly display vectorgraphics images independent of the manufacturer or the version of theweb browser. The web-browser plug-in can allow animations to be properlyscaled to as web browser window is resized. The game client application206 or 207 can use the web browser's communication API (ApplicationProgramming Interface) to communicate with the network-based game system100.

For example, the computer devices 106 and 107 can be installed withFlash plug-in produced by Macromedia Inc. Flash is a bandwidth friendlyand browser independent vector-graphic animation technology. Animationis choreographed using one or more sequential timelines in which actionsand interactions are defined. The Flash plug-in can be downloaded,installed, and attached to a web browser. The Flash plug-in allows theweb browser to play SWF (Small Web Format) movie clips in theweb-browser it finds referenced in a webpage. Each SWF movie clip caninclude a unique game. The SWF movie clips contain the game logic aswell as animations, images, and other effects. The SWF movie clip cancommunicate with servers in the network-based game system 100 using thelibrary of functions provided by Macromedia's Flash plug-in andlibraries of APIs developed for the network-based game system 100.Macromedia's Flash MX and Freehand applications and other Flash filescan also be viewed through a Web browser plug-in (or the Flash player)or multimedia applications that access the player directly. Flash filescan include sound. Flash can use the FLA files for source files and SWFfiles for the Flash movies. Flash files are space-efficient and suitablefor interactions, comparing to other movie files (AVI, MPG, etc.) files.

The game client application 206 or 207 can be written in one or more SWFmovie clips to be loaded in the web browser. Each game clientapplication 206 or 207 can correspond to one or more games. The SWFmovie clips include game logic as well as animations, images, and othereffects. The SWF movie clips can communicate with servers in thenetwork-based game system 100 using the library of functions provided byMacromedia's Flash plug-in. A library of APIs can be developed for theSWF movie clips that can be re-used in multiple games.

In accordance with the present specification, the game clientapplications 206 and 207 communicate with the network-based game system100 via the load balancer 115 in persistent communication channels suchas socket network connections. A load balancer 115 can monitor thestatus of the game servers 141-143, for example, whether one of the gameservers 141-143 is on or off. The load balancer 115 can monitor the loadlevel of the game servers 141-143. The load balancer 115 can direct arequest from a game client application 206 or 207 to a game server141-143 that is available and has relatively low load level so that thecapacity of the game servers 141-143 can be efficiently utilized.

The requests or updates from the game client applications 206 and 207 tothe game engine applications 301-303 via the load balancer 115 caninclude instructions that involve different types of information. Forexample, the communications between the game client applications 206 and207 and the game engine applications 301-303 can include:

a) Game logic information that does not need to be stored permanently ondata storage beyond a game session. In a soccer game, for example, thegame logic information can include positions of a soccer-ball on asoccer field as the ball is being kicked around; the positions or thepostures of a player's avatar as the player moves across the soccerfield, and the instant message chat communication among the players in agame room, including text-based chats and emoticons. The game logicinformation can be handled by the game engines alone.

b) Persistent game-state information that is usually of use beyond asingle game session. The persistent game-state information may includefor example, user account information, attributes and statisticsassociated with a game player such as his or her game scores, gamecurrency or game credits that the player owns, an inventory for toolsand weapons owned by a player, an update of a buddie list, etc. Thepersistent game-state information is handled by the GSI program 400, andcan be updated and stored in the data base system 150.

Not all the information handled by the GSI program 400 needs to bestored beyond a game session. For example, the GSI program 400 can storegame room ID and game session ID in a local memory, which are typicallycleared after the end of a game session. But the game room ID and thegame session ID can be stored for hours and can be retrieved during thisperiod of time for authentication of users and game client applications206 and 207.

In general, the game engine application 301-303 can instantaneouslyrespond to calls from the game client applications 206 and 207 to ensurereal-time performance of the game sessions. The GSI program 400 on theother hand can respond to the game engine application 301-303 in thetypical time frame of 0.001-0.1 milliseconds, depending on networklatency and the processing time. The GSI program 400 can reliablyrespond to requests, but not necessarily in real time. The GSI program400 can store the persistent game-state information into the player'saccount on the database 150, which can include game status informationsuch that the player can retrieve the information after the specificgame session is closed.

The game client applications 206 and 207 can securely communicate withthe load balancer 115 and thus with the game engine application 301-303,and the GSI program 400 in encrypted serialized messages. Each gameengine application 301-303 can choose to communicate in specificserialization communication protocol such as PHP (HypertextPreprocessor), XML, AMF, XML-RPC (Remote Procedure Call), etc. A libraryof serialization communication protocols is stored on a computer deviceconnected to the network-based game system 100 available to the gameengine application 301-303 and the GSI program 400. The library providesrules for encryption and decryption of the serialized messages underdifferent protocols. The communication protocols can be independent ofthe game logic, the game rooms, and the game engine applications. Infact, the disclosed system allows different game client applications 206and 207 using many different communication protocols to enter the samegame room at the same time. A call from a game client application 206 or207 can include a token that specifies gaming protocols such as PHP,XML, AMF, XML-RPC, etc. The load balancer 115 can also direct a callfrom a game client application 206 or 207 to a game server 141-143 thatcan interpret the protocols required by the specific call.

The game server 141, 142, or 143 can keep an open socket connection withthe computer device 106 or 107. The game engine application 301-303 andthe game client application 206 or 207 can send and receive TCP/IPmessages to and from each other by writing and reading data through thesocket connection. Messages can be sent and received from either thegame server 141 (or 142 and 143) or the computer device 106 or 107 atany time. The persistent network connection allows instantaneous two-waycommunications and guarantees the games updated in real time withoutnetwork latency during a game session. The persistency of the networkconnection between the game client application 206 or 207 and the gameengine application 301-303 typically last through a game session. A lossof connection in the persistent communication can be interpreted as thatthe game client application 206 or 207 has left the game. A stop in thetwo-way communications between the game client application 206 or 207and the game engine application 301-303 (via the load balancer 115) canbe interpreted by the game engine application 301-303 as that the gameclient application 206 or 207 is leaving the game session.

The game engine application 301-303 is compatible with different serversoftware implementations such as Sushi Multiuser Server available at“www.wok2.de”, ElectroServer 3 available at “www.electrotank.com”, andTerazona Network Engine available at “www.zona.net”. The network-basedgame system 100 can include game engine applications 301-303 developedusing different server software. Different server software may requireserialized messages encrypted under different serialization protocols.

During a game session, each game client application 206 or 207 can besupported by a game engine application 301-303 with a persistentconnection in the network-based game system 100. The game clientapplication 206 or 207 can pull information related to the specific gameor game session from the game engine application 301-303. The gameengine application 301-303 can also update the game client application206 or 207 with animations and short-term game logic information that donot need to be permanently stored. The game client application 206 or207 can request the saving of the game results. The game engineapplication 301-303 can validate the data to be saved on the data basesystem 150 by the GSI program 400 and returns whether or not the savingis succeeded. The game engine application 301-303 can also gatherinformation about all the players in the same game room and broadcastthe information to the game room. The game engine application 301-303can establish the players in the same game room as peers. The gameengine application 301-303 can conduct peer-to-peer communications inreal time by broadcasting a player's actions or events over thatplayer's game client application to other peers' game clientapplications in the same game room. Each game client application 206 or207 in the game room can construct a message and request the game engineapplication 301-303 to forward to the message another peer or all thepeers in the same game room.

The load balancer 115 can control the load balance and the distributionof players and game sessions in the game rooms across multiple gameservers 141-143. A game engine application 301-303 includes programmedgame logic for each game and can control the game flow. The game engineapplication 301-303 can decide when to retrieve user information fromthe GSI program 400 and store information to the GSI program 400. Manygame players each running a game client applications can play in acommon game session. The game players can, for example, compete witheach other in a ball game or fishing game in the game session. The gameplayers playing can also be depicted as playing in a same game room. Inthe multi-player game sessions, the game engine application 301-303 canbroadcast updates to many game client applications 206 and 207 runningon many computer devices 106, 107 that are in the same game room.

The GSI program 400 serves as an interface for the game servers 141-143to the database 150. The game engine application 301-303 can communicatewith the GSI program 400 in trusted intra-network connections. The gameengine application 301-303 can contact the GSI program 400 to verifythat game rooms for a given game are not duplicated by accident. Duringthe game sessions, the game client applications 206 and 207 updates thegame engine application 301-303 with game statistics and game playerinformation such as game scores, game equipment, game location. The gameengine application 301-303 can pass the persistent game-stateinformation to the GSI program 400. Tokens and validation keys can alsobe passed from the GSI program 400 to the game engine application301-303 and in turn to the game client applications 206 and 207 to makesure different actions are occurring in the correct order and are notbeing spoofed by the client game application 206 or 207. The game clientapplication 206 or 207 may be required to return the tokens and keyscombined with other variables to ensure that the game's integrity hasnot been compromised. The game engine application 301-303 cancommunicate with the GSI program 400 over its own local host loop-backIP address (since the GSI program 400 can be installed and run on thesame computer as the game engine application 301-303), eliminatingnetwork latency between the game engine application 301-303 and the GSIprogram 400.

In other embodiments, the game engine application 301-303 can act as acontroller that can monitor the loads of game servers 141-143 and thestatus of the game rooms. The game engine application 301-303 canintelligently assign the game client applications 206 and 207 anappropriate game room according to the loads of the game servers 141-143and the status of the game rooms. The game engine application 301-303can also store game room ID, user ID, and game session ID in a localmemory for verifying game client applications 206 and 207 withoutnecessarily going through the GSI program 400.

The GSI resides in a GSI server 450 that can be one of the web servers121-123, one of the game servers 141-143, or another server connected tothe computer network in the network-based game system 100. In otherwords, the GSI program 400 can reside on any of the web servers 121-123and the game servers 141-143. Using GSI program 400 as an interface isbeneficial because the game servers 141-143 and the data base system 150can be modified independently without affecting each other in systemupgrades.

Referring to FIG. 3, to start a game, a game player can access a gameservice website such as www.gaiaonline.com operated by Gaia InteractiveInc., based in California, USA. The game player can initiate a gamesession by clicking a game client application 206 or 207 on a computerdevice 106 or 107 (step 310). The game client application 206 or 207 canbe presented on a web page presented by a web browser application. Inthe present invention, a game session refers to an active connectionbetween the client game application 206 or 207 and other programs suchas game engine application 301-303 stored in the network-based gamesystem 100. The game client application 206 or 207 can also be in theform of stream media (e.g. Flash SWF) so a game can keep loading asgame-play starts. In some embodiments, a game session can be initiatedby a game client application 206 or 207 by contacting and authenticatingwith a game engine application 301-303 via a load balancer 115 withoutthe need to access a webpage.

The game client application 206 or 207 sends a request to the loadbalancer 115 to request long in the user using a password (step 310).The load balancer 350 directs the authorization request to a game engineapplication 301-303 on a game server 141-143 (step 330). The game engineapplication 301-303 passes the request to GSI program 400 (step 340).The GSI program 400 verifies the user ID and password using informationretrieved from the data base system 150. The GSI program 400 creates anew session ID for the user at login (step 350). If the game roomexists, the GSI can assign the game client application 206 or 207 to anexisting one. If the game room does not exist, the GSI program 400creates, validates the game room, and stores the game room ID. The GSIprogram 400 returns validation message to the game engine application301-303 to confirm the authenticity of the user ID and the game sessionID.

The validation message can include the game session ID and game room IDin association with the user ID. The game engine application 301-303hold the user ID and the game session ID for future identificationpurposes. The game engine application 301-303 communicates a validationmessage to the game client applications 206 or 207 about the gamesession ID and which game room the user has been assigned to (step 360).The game client application 206 or 207 enters the game room. The gameclient application 206 or 207 then requests the load of a game. Forexample, a SWF file is loaded by the plug-in at the request of the webbrowser. The SWF is executed by a Flash Plugin. Instructions inside theSWF tell it to connect to a game engine application 301-303.Instructions inside the SWF also instruct it to display the gameenvironment and run the game interactions.

During the game session, the game client applications 206 or 207 canupdate the game engine application 301-303 with game statistics, andpersistent game-state information such as scores, equipment, and theamount of currency owned by the user. The game engine application301-303 can pass the persistent game-state information to the GSIprogram 400 (step 370), which in turn can update the information in thedata base system 150 (step 380).

Referring to FIG. 4, the GSI program 400 can include two applicationlayers: a GSI controller 401 and one or more GSI models 402. Forexample, the GSI program 630 can be built on a hybridized MVC (ModelView Controller) architecture including the two application layers TheGSI controller 401 handles the communications with the game engineapplications 301-303. The GSI controller 401 can serialize orde-serialize the messages received from or sent to the game engineapplications 301-303. The GSI controller 401 can access a game protocollibrary for interpreting serialized messages under different protocols.The application logic is processed by the GSI model 402. The GSIcontroller 401 is a gateway responsible for controlling and respondingto the requests from the game engines 301-303. The game engineapplication 301-303 can receive a series of discreet requests forspecific information from the game client applications 206 and 207. Thespecific requests can include queries to the data base system 150 forretrieving or updating persistent game-state information.

The GSI controller 401 can de-serialize a message from a game engineapplication 301-303 and a de-serialized message to a specific GSI model402. The GSI model 402 contains the application logic for eachparticular call. The GSI model 402 interprets the de-serialize messagesand accepts the parameters carried in the message. The GSI model 402 canextract information from the data base system 150 and returns a responseto the GSI controller 401. The GSI controller 401 serializes theresponses from the GSI model 402 using the same protocol as the initialrequest and then returns the responses back to the game engineapplication 301-303.

The data base system 150 can include a router 155 and a plurality ofstorage devices 151-153 that are connected to the router 155 in acomputer network. Referring to FIG. 5, the data stored in the data basesystem 150 can be structured by a plurality of clusters 550 and 560.Each cluster 550 or 560 can store information for a relatively shortlist of users, for example, 10,000 users instead of hundreds ofthousands of users. The amount of the user gaming data stored at thecluster level is selected to optimize the access speed of the individualclusters. The relatively short user list helps to assure user gameinformation can be rapidly retrieved and written for each cluster. Therouter 155 includes software responsible for directing the dataretrieval and writing calls to the correct clusters. The call directionscan be implemented in a variety of ways such as look-up table, hashing,or data range based on the user ID.

The cluster 550 can include a master data base 551 and a slave data base552. Similarly, the cluster 560 can include a master data base 561 and aslave data base 562. The master data base 551 and the slave data base552 comprise substantially the same data-base structures for storingpersistent game-state information comprises one or more of a user'saccount information, user identification, a user's game scores, sessionidentification, game room information, a user's game currency or gamecredits, an inventory for a user's asset, or a user's buddies list.

The master data base 551 and the slave data base 552 can share the samenetwork address (or URL) in the cluster 550 for communication with therouter 155 or the GSI server 450. At each point of time, the cluster 550points the network traffic to one of the master data base 551 and theslave data base 552. In one implementation, the network traffic isalways directed to the master data base 551 by default. In anotherimplementation, there is not a default data base in the pair. Thenetwork traffic can be directed to either one of the master data base551 or the slave data base 552. For example, the URL can be pointed tothe master data base 551 at which the data is retrieved or written forcommunications with the GSI program 400. The slave data base 552 issynchronized with the master data base 551. If an error occurs to thenetwork connection to the master data base 551, the cluster 550 can hotswap the URL link to the slave database 552 to allow the master database 551 to be repaired without affecting the real-time performance ofthe network-based game system 100. To ensure system reliability againstpotential device failures, the master data bases 551, 561 and the slavedata bases 552, 562 for each cluster 550 and 560 can be distributed ondifferent storage devices 151-153.

Referring to FIG. 5, the application logic accessible to GSI models 402can be broken down into several application layers to allow the GSIprogram 400 to be a flexible interface for different data base formatsand protocols. After receiving a request from a game client application206 or 207, the GSI controller 401 evaluates the request and determineswhich communication protocol is to be used. The communication protocolmay be indicated in a header in the request message or stored at astorage location defined by an URL. The GSI controller 401 theninstantiates a view object from a game protocol library to de-serializethe request. The view object can include decryption and encryption rulesfor the protocol. The view object de-serializes the request and returnsthe request in a standardized format to the GSI controller 401. The GSIcontroller 401 evaluates the request. The GSI controller 401instantiates a GSI model 402 to handle different sections of therequest. The GSI model 402 accepts the parameters passed in by the GSIcontroller 401 and returns a response. The GSI controller 401 capturesthe result of these operations and passes them to the view object. Theview object serializes the response. The GSI controller 401 returns theserialized response to the game client application 206 and 207.

The GSI model 402 can initiate a Data Access Object (DAO). A databasequery (e.g. SQL query) is instantiated to update the database system150. The GSI model 402 can further initiate a database object (DBO). Thegame status information in the request is retrieved or written in theclusters 550 and 560 stored in the storage devices 151-153.

The disclosed data base system 151 and the GSI program also allowdata-base structures in the data bases to be reliably and flexiblyupdated without affecting the performance of the network-based gamesystem 100. Referring to FIG. 6, using cluster 550 as an example, thenetwork traffic (i.e. the database URL) is first pointed to the masterdatabase 551 (step 610). The data updates and retrieval from the GSIprogram 400 is directed to the master database 551. The data basestructure of the slave data base 552 is updated (step 620). For example,a column can be added to the data table in the slave data base 552. Thenetwork traffic is then swapped to the slave database 552 (step 630).The data updates and retrieval from the GSI program 400 is directed tothe slave database 552. The data base structure of the master data base551 is updated while the slave database 552 is taking the workload fromGSI program 400 (step 640). After the master data base 551 is changed tothe same data base structure as the slave database 552, the master database 551 and the slave database 552 are synchronized (step 650). Theuser gaming data in the old data-base structure as well as theincrementally changed data-base structure are both synchronized. Thenetwork traffic (i.e. the database URL) can be again swapped to point tothe master database 551 (step 660).

Although specific embodiments of the present invention have beenillustrated in the accompanying drawings and described in the foregoingdetailed description, it will be understood that the invention is notlimited to the particular embodiments described herein, but is capableof numerous rearrangements, modifications, and substitutions withoutdeparting from the scope of the invention. For example, the discloseddata base system is compatible with different designs and formats. Forexample, the DBO in the GSI program can be connected to a proxy serverthat is connected to a plurality of clusters in the data base system.The proxy server can handle the data communications between the GSImodel and a plurality of clusters. The proxy server can provide aunified network interface data base clusters that are stored indifferent structures and distributed in different locations.

In another example, the game logic can also be remotely stored on aserver in connection with the network-based game system, instead of on acomputer device 106 or 207. The server may be able to store more complexgame logic than game client applications. The remotely stored game logiccan be activated remotely in real-time with secure processing on theservers or downloaded to the game players' computer devices 106 and 107before a session starts. Moreover, each game engine application cansupport one or many game client applications and thus many game logics.

Furthermore, the game engine applications 301-303 can be implemented ondifferent game platforms that may be provided by different game serviceproviders, which allow game players to access a wide range ofnetwork-based game engine applications based on different gameplatforms. Different game client applications can be installed on thecomputer devices to run specific games supported by the game platformsof the corresponding game engine applications. Moreover, a single gameserver or a single game engine application can simultaneously supportone or many game client applications.

1. A network-based game system, comprising: a game-system-interface(GSI) server configured to receive an instruction related to persistentgame-state information from a game client application running on aremote computer device; a data base system comprising a master data baseand a slave data base, wherein the master data base and the slave database comprise substantially the same data-base structure configured tostore persistent game-state information for a plurality of users; and arouter configured to direct the instruction to one of the master database or the slave data base to allow the persistent game-stateinformation to be written to or retrieved from the one of the masterdata base or the slave data base in response to the instruction.
 2. Thenetwork-based game system of claim 1, wherein the master data base andthe slave data base are configured to synchronize changes in thepersistent game-state information in one of the master data base and theslave data base to the other one of the master data base and the slavedata base.
 3. The network-based game system of claim 1, wherein theinstruction comprises writing persistent game-state information to thedata base system or retrieving the persistent game-state informationfrom the data base system.
 4. The network-based game system of claim 1,wherein the data base system comprises a plurality of storage devices inconnection with the router and the master data base and the slave database are stored on two different storage devices in the plurality ofstorage devices.
 5. The network-based game system of claim 1, whereinthe master data base and the slave data base share the same networkaddress for communication with the router or the GSI server.
 6. Thenetwork-based game system of claim 1, wherein the data base systemcomprises a plurality of pairs of master data bases and slave data basesin connection with the router, and wherein the router is configured todirect the instruction to one of the plurality of pairs of the masterdata base and the slave data base in accordance with a useridentification associated with the instruction.
 7. The network-basedgame system of claim 1, wherein the GSI server is configured to store aGSI program that comprises a GST controller that is configured extractthe instruction from a message received from the game clientapplication.
 8. The network-based game system of claim 7, wherein theGSI controller is configured to de-serialize the message received fromthe game client application.
 9. The network-based game system of claim7, wherein the GSI program comprises a GSI model that is configured toinitiate a database access object or a database object, wherein thedatabase access object or the database object is configured tocommunicate with the router in response to the instruction.
 10. Thenetwork-based game system of claim 1, wherein the data base system isconfigured to return a response message in response to the instruction.11. The network-based game system of claim 1, further comprising a gameserver configured to store a game engine application, wherein the gameengine application is configured to receive the instruction related topersistent game-state information from a game client application andsend the instruction to the GSI server.
 12. The network-based gamesystem of claim 11, wherein the game engine application or the GSIprogram is configured to send a message to authenticate useridentification, game session identification, or game room identificationassociated with a game client application.
 13. The network-based gamesystem of claim 1, wherein the persistent game-state informationcomprises one or more of a user's account information, useridentification, a user's game scores, session identification, game roominformation, a user's game currency or game credits, an inventory for auser's asset, or a user's buddies list.
 14. A method of providing a gameover a computer network, comprising: receiving an instruction related topersistent game-state information from a game client application runningon a remote computer device; retrieving the persistent game-stateinformation from or writing the persistent game-state information to amaster data base or a slave data base in response to the instruction,wherein the master data base and the slave data base store substantiallythe same data-base structure configured to store persistent game-stateinformation for a plurality of users; and synchronizing changes in thepersistent game-state information in one of the master data base and theslave data base to the other one of the master data base and the slavedata base.
 15. The method of claim 14, wherein the instruction compriseswriting persistent game-state information to the data base system orretrieving the persistent game-state information from the data basesystem.
 16. The method of claim 14, wherein the master data base and theslave data base share the same network address for communication withthe remote computer device.
 17. The network-based game system of claim14, wherein the persistent game-state information comprises one or moreof a user's account information, user identification, a user's gamescores, session identification, game room information, a user's gamecurrency or game credits, an inventory for a user's asset, or a user'sbuddies list.
 18. A method for providing uninterrupted gaming serviceduring a data-base structure update in a network-based gaming system,comprising: receiving first persistent game-state information from agame client application running on a remote computer device;authenticating at least one of user identification, game sessionidentification, or game room identification in the request; writing afirst portion of the first persistent game-state information to a firstdata-base structure in a master data bases; changing a second data-basestructure in a slave data base; writing a second portion of the firstpersistent game-state information to the second data-base structureafter the step of changing a second data-base structure; changing thefirst data-base structure such that the first data-base structurebecomes substantially the same as the second data-base structure; andsynchronizing the first persistent game-state information stored in thefirst data structure and the first persistent game-state informationstored in the second data structure.
 19. The method of claim 18, furthercomprising retrieving second persistent game-state information from thesecond data-base structure after the step of changing a second data-basestructure.
 20. The method of claim 18, further comprising writing secondpersistent game-state information to the first data-base structure orretrieving second persistent game-state information from the firstdata-base structure after the step of changing the first data-basestructure.